package com.yh.patterns.singleton.demo8;

import java.lang.reflect.Constructor;

/**
 * @Auther:云尚学Java
 *   测试使用反射破坏单例模式
 */
public class Client {
    public static void main(String[] args) throws Exception {
        //1.获取Singleton字节码对象
        Class clazz = Singleton.class;
        //2.获取无参构造方法对象
        Constructor constructor = clazz.getDeclaredConstructor();
        //3.取消访问检查
        constructor.setAccessible(true);
        //4.通过反射创建Singleton对象
        Singleton singleton= (Singleton)constructor.newInstance();
        Singleton singleton1= (Singleton)constructor.newInstance();
        System.out.println(singleton==singleton1);//如果返回true说明并没有破坏单例模式，如果是false说明破坏了单例模式
    }
}
